﻿using System.Collections.Generic;
using FollowMe.Services.Response;
using FollowMe.Services.Request;

/**
 * FollowMe Server
 * UWRF CS425 & CS343 Project Fall 2014
 * Adam Drews
 *   email adam.drews@my.uwrf.edu
 * Tyler Johnson
 *   email tyler.johnson@my.uwrf.edu
 * Nicholas Thorp
 *   email nicholas.thorp@my.uwrf.edu
 */
namespace FollowMe.Services
{
    /// <summary>
    /// Functions of the program as a whole, what must be available
    /// </summary>
    public interface IFollowMeService
    {

        MemberView addNewMember(RegisterMemberRequest _member);

        FindMessagesResponse findSentMessagesFrom(FindMemberInfoRequest _member);

        FindMessagesResponse findReceivedMessagesFor(FindMemberInfoRequest _member);

        FindMessagesResponse findUnreadMessagesFor(FindMemberInfoRequest _member);

        MessageView sendMessageTo(SendMessageRequest _message);

        HTTPResults markAsRead(MessageRequest request);

        void addLocation(AddLocationRequest _locationRequest);

        IEnumerable<LocationView> getLocationsFor(FindMemberInfoRequest request);

        FriendView addFriend(AddFriendRequest _addFriend);

        HTTPResults deleteFriend(DeleteFriendRequest _deleteFriend);

        MemberView findMemberInfo(FindMemberInfoRequest member);

        FindFriendResponse searchForFriendsByUsername(FindFriendRequest request);

        HTTPResults addRegistrationID(AddRegistrationIDRequest request);
    }
}